/**
    see Analyzer.D.syntax.tree
 */
module Analyzer.D.syntax.terminal;

import Analyzer.D.syntax.node;
import Analyzer.D.syntax.CoreAnalyzer;
import Analyzer.D.lexical.token;
import std.utf;

import Analyzer.D.util.string;

class Terminal : ParseNode
{
    private
    {
        Token token;
    }
    
    public
    {
        this()
        {
            super();
        }
        
        this( Token token )
        {
            this.token = token;
			// Kuan Hsu
			tokenText ~= token.text;
        }
        
        public Token getToken()
        {
            return token;
        }

        char[] getName()
        {
            //return token.text;
            return "Token";
        }

        NodeItem[] getItems()
        {
            return NodeItem.createNodeItems
            (
                "Type", token.typeName(),
                "Text", token.text
            );
			/*
            return NodeItem.createNodeItems
            (
                "Type", token.typeName().utf8(),
                "Text", token.text().utf8()
            );
			*/
        }
    }
}

